/*
 *  DriverAgent.h
 *  powaah
 *
 *  Created by Tim Uusitalo on 4/23/11.
 *  Copyright 2011 __MyCompanyName__. All rights reserved.
 *
 */

#ifndef DRIVER_AGENT_H

#define DRIVER_AGENT_H

#include "AgencyInclude.cpp"
#include "StdInclude.cpp"
#include "DriverOption.h"
#include "MathUtility.h"
class DriverAgent
{
public:
	DriverAgent();
	~DriverAgent();
	
	void update(CarState& cs, const float dt, TrackLearner& track);
	
	const DriverOption getResultingOption();
	
	const float getSpeed(CarState& cs, const float rad);
	
	const float getWidth();
	
	const float getTargetSpeed();
	
	
private:
	std::vector<DriverOption> options;
	CurveAgent curve_agent;
	SpeedAgent speed_agent;
	TrackAgent track_agent;
	OvertakeAgent overtake_agent;
	float target_speed;
	
	float acceleration[6];
	float decceleration;
	
	DriverOption highest;
	
	int counter;
};


#endif